我正在尝试使用jdk版本1.6.0_32编写Javahttps客户端。我有一个已导入新信任库的自签名公共(public)证书。问题是我不断收到“线程“主”javax.net.ssl.SSLHandshakeException中的异常:握手期间远程主机关闭连接”SSL调试输出如下:C:\Users\csheets\eclispe_workspace\sdpweb\InstallSSLCert>javaTestCertkeyStoreis:keyStoretypeis:jkskeyStoreprovideris:initkeystoreinitkeymanageroftypeSunX509
我在Java中使用X509证书。给定一个证书,是否可以在到达根证书之前找到签名层次结构中的所有其他证书?我有一个证书文件(扩展名为.cer),我想提取父签名证书。我想继续查找该证书的父级,直到获得最终的自签名根证书。我检查了java.security.cert中的X509Certificate证书API和相关API,但找不到任何有用的东西。 最佳答案 这并不难-假设您以某种方式/带外获得了一个或多个钥匙串(keychain)中的所有中间证书和根证书。看看http://codeautomate.org/blog/2012/02/cer
我正在开发一个Java程序来解密使用TLS_RSA_WITH_AES_128_GCM_SHA256密码的TLS1.2session。我使用wireshark录制了一个测试session。MasterSecret已为人所知。No.TimeProtocolLengthInfo40.000124000TLSv1.2166ClientHello60.000202000TLSv1.21074ServerHello,Certificate,ServerHelloDone80.001071000TLSv1.2393ClientKeyExchange,ChangeCipherSpec,Finished
我们需要至少使用TLS1.1连接到外部服务,这在使用JavaSDKv.1.9.32的本地开发服务器上不起作用。有没有办法强制本地开发服务器使用特定版本的TLS?还是JavaSDK不支持它? 最佳答案 安装JDK8后(在我使用JDK7之前),我的本地Appengine开发服务器开始使用TLS1.2。JDK8usesTLS1.2bydefault. 关于java-在Java中的AppEngine本地开发服务器上强制TLS>1.0,我们在StackOverflow上找到一个类似的问题:
我是SSL的新手,并且遇到了一些看似已知的问题。我的应用程序是SSL客户端并调用另一个为双向SSL启用的组件。两个组件中的证书都是正确的,有时连接工作正常。每个服务器都有自己的服务器证书和私钥,但根证书和中间证书相同。服务器中的SSL检查在ApacheSWLB中完成。|-------------|/|Tomcat1||-------------|/|-------------||---------->|ApacheSWLB|/||-------------|\|\|\|-------------||-----------||------------|||Tomcat2||SSLClie
看起来OpenJDK版本8中的JSSE没有实现RFC7507.OpenJDK错误跟踪器中存在一个开放缺陷:JDK-8061798但是关于OracleJDK的资料不多。OracleJDK版本8是否实现TLS回退信令密码套件值(SCSV)?如果可以,如何启用此功能? 最佳答案 我找不到任何证据表明OracleJDK8支持此功能。JDK-8061798中的RFE之所以没有被执行,似乎是因为这将是一个破坏性的变化。对上面的评论说:AsmentionedintheSSLParameters,thisrequiresanAPIchangefor
我想在HTTPS站点上的Jetty中运行一个servlet,该站点只需要部分站点(特定URL)的客户端证书。例如:https://example.com/someservlet/public-无需客户证书https://example.com/someservlet/protected-需要客户证书在Apache中,我可以通过指定SSLVerifyClientrequire来完成此操作在里面或这会强制Apache在发出请求后重新协商SSL连接。我不想运行嵌入任何其他东西的Jetty,只是独立运行。这可能吗?Servlet能否以某种方式直接导致这种情况?可以通过配置完成吗?
如何使用Java执行HTTP请求并使用X.509证书对其进行签名?我通常使用C#编程。现在,我想做的是类似于以下内容,仅在Java中:privateHttpWebRequestCreateRequest(Uriuri,X509Certificate2cert){HttpWebRequestrequest=(HttpWebRequest)HttpWebRequest.Create(uri);request.ClientCertificates.Add(cert);/*...*/returnrequest;}在Java中,我创建了一个java.security.cert.X509Certi
在我的示例中有三个证书,假设它们形成一个链,但我还不知道它们中的哪一个签署了哪个:X509Certificatec1=....X509Certificatec2=....X509Certificatec2=....我想知道哪个证书负责签署另一个证书。计划是获取“AuthorityKeyIdentifier”并将其与“SubjectKeyIdentifier”匹配。importorg.bouncycastle.asn1.DEROctetString;privatestaticStringdecodeKey(byte[]e){DEROctetStringoctet=newDEROctetS
我想以编程方式访问需要客户端证书的站点,我在PEM文件中拥有该证书。在此应用程序中,如果可以避免,我不想将它们添加到我的keystore、使用keytool或openssl。我需要直接在代码中处理它们。HttpClienthttpclient=newDefaultHttpClient();HttpGethttpget=newHttpGet("https://my.secure.site.com/url");//TODO:Specifyca.pemandclient.pemhere?HttpResponseresponse=httpclient.execute(httpget);Http